﻿using Apewer;
using System;
using System.Collections.Generic;
using System.Data;

namespace Apewer.Source
{

    /// <summary>查询数据表。</summary>
    public interface IQuery : IDisposable, IToJson
    {

        #region 结果集的属性。

        /// <summary>语句执行成功。</summary>
        bool Success { get; }

        /// <summary>消息。</summary>
        string Message { get; }

        /// <summary>获取默认结果表。如果设置默认结果表，会丢失设置前的所有结果表。</summary>
        DataTable Table { get; }

        /// <summary>默认表中的数据总行数。</summary>
        int Rows { get; }

        /// <summary>默认表中的数据总列数。</summary>
        int Columns { get; }

        #endregion

        #region 读取 DateTime 对象。

        /// <summary>获取默认表中指定单元的内容。</summary>
        /// <param name="rowIndex">行索引，从 0 开始。</param>
        /// <param name="columnIndex">列索引，从 0 开始。</param>
        object Value(int rowIndex, int columnIndex);

        /// <summary>获取默认表中指定单元的内容。</summary>
        /// <param name="rowIndex">行索引，从 0 开始。</param>
        /// <param name="columnName">列名称/字段名称，此名称不区分大小写。</param>
        object Value(int rowIndex, string columnName);

        #endregion

        #region 模型化。

        /// <summary>转换为模型数组。</summary>
        ObjectSet[] ToArray();

        #endregion

    }

}
